home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / boot / netBoot.new / sys / banner.c < prev    next >
C/C++ Source or Header  |  1990-12-19  |  5KB  |  162 lines

  1.  
  2. /*
  3.  * @(#)banner.c 1.1 86/09/27
  4.  * Copyright (c) 1986 by Sun Microsystems, Inc.
  5.  */
  6.  
  7. /*
  8.  * banner.c:  Prints banner at power-up or for "kb" command.
  9.  */
  10.  
  11. #include "../sun3/sunmon.h"
  12. #include "../h/globram.h"
  13. #include "../h/idprom.h"
  14. #include "../sun3/cpu.addrs.h"
  15. #include "../h/video.h"
  16. #include "../h/clock.h"
  17. #include "../h/fbio.h"
  18. #include "../h/eeprom.h"
  19.  
  20. #define    SUN3_KEYBD    0x03
  21.  
  22. char monrev[] = ID;
  23.  
  24. banner()
  25. {
  26.     struct idprom id;
  27.     unsigned megs;
  28.     int    i;
  29.  
  30.     printf("\nSelftest Passed.\n\n");
  31.  
  32.     if (EEPROM->ee_diag.eed_showlogo != 0x12) {
  33.         if (gp->g_outsink == OUTSCREEN)
  34.                    printf("\t");
  35. #ifdef CARRERA
  36.         printf ("Sun Workstation, Model %sSun-3/160%s, Sun-%s keyboard\n",
  37.                     gp->g_fbtype == FBTYPE_SUN2COLOR? "": "Sun-3/75M or ",
  38.                    gp->g_fbtype == FBTYPE_SUN2COLOR? "C": "M",
  39.                    gp->g_keybid == SUN3_KEYBD? "3": "2");
  40. #endif CARRERA
  41. #ifdef M25
  42.             printf ("Sun Workstation, Model Sun-3/50M, Sun-%s keyboard\n",
  43.                      gp->g_keybid == SUN3_KEYBD? "3": "2");
  44. #endif M25
  45. #ifdef SIRIUS
  46.            printf ("Sun Workstation, Model Sun-3/200 Series, Sun-%s keyboard\n",                    gp->g_keybid == SUN3_KEYBD? "3": "2");
  47. #endif SIRIUS
  48. #ifdef PRISM
  49.             printf ("Sun Workstation, Model Sun-3/110LC or Sun-3/130LC, Sun-%s keyboard\n",
  50.                      gp->g_keybid == SUN3_KEYBD? "3": "2");
  51. #endif PRISM
  52.     } else {
  53.         printf("%s", &EEPROM->ee_diag.eed_banner[0]);
  54.     }
  55.         
  56.  
  57.     megs = (unsigned)(gp->g_memorysize)/(1024*1024);
  58.     if (EEPROM->ee_diag.eed_showlogo != 0x12 && gp->g_outsink == OUTSCREEN)
  59.         printf("\t");
  60.     printf("ROM %s, %dMB memory installed",  monrev, megs);
  61.  
  62.     if (IDFORM_1 != idprom(IDFORM_1, &id) ||
  63.            (id.id_machine&IDM_ARCH_MASK) != IDM_ARCH_SUN3) {
  64.         printf("\n\tID PROM INVALID\n\007");
  65.     } else {
  66.         printf(", Serial #%d\n", id.id_serial);
  67.         if (EEPROM->ee_diag.eed_showlogo != 0x12 && gp->g_outsink == OUTSCREEN) 
  68.                     printf("\t");
  69.         printf("Ethernet address %x:%x:%x:%x:%x:%x\n",
  70.             id.id_ether[0], id.id_ether[1], id.id_ether[2],
  71.             id.id_ether[3], id.id_ether[4], id.id_ether[5]);
  72.     }
  73.  
  74. #ifndef GRUMMAN
  75.     if (EEPROM->ee_diag.eed_showlogo != 0x12 && 
  76.             gp->g_outsink == OUTSCREEN && gp->g_ay >= 3)
  77.         sunlogo(gp->g_ay - 3);        /* produce the sun logo */
  78.     printf("\n");
  79. #endif GRUMMAN
  80. }
  81.  
  82. /*
  83.  *    Display a help menu for monitor commands
  84.  */
  85.  
  86. help()
  87. {
  88.         fwritestr ("\f", 1); /* Clear screen */
  89.         printf("Boot PROM Monitor Commands\n\n");
  90.     display_border();
  91.     menu_string("a [digit]", 31, "Open CPU Addr Reg (0-7)");
  92.     menu_string("b [dev([cntrl],[unit],[part])]", 10, "Boot a file");
  93.     menu_string("c [addr]", 32, "Continue program at Addr");
  94.     menu_string("d [digit]", 31, "Open CPU Data Reg (0-7)");
  95.     menu_string("e [addr]", 32, "Open Addr as 16 bit word");
  96.     menu_string("f beg_addr end_addr pattn [size]", 8, "Fill Memory");
  97.     menu_string("g [addr]", 32, "Go to Addr");
  98.     menu_string("h", 39, "Help Menu");
  99. #ifdef  SIRIUS
  100.     menu_string("i [addr]", 32, "Open Cache Data");
  101.     menu_string("j [addr]", 32, "Open Cache Tags");
  102. #endif  SIRIUS
  103.     menu_string("k [number]", 30, "Reset (0)CPU, (1)MMU, (2)System");
  104.     menu_string("l [addr]", 32, "Open Addr as 32 bit long");
  105.     menu_string("m [addr]", 32, "Open Segment Map");
  106. #ifdef  SIRIUS
  107.     menu_string("n [i/e/d]", 31, "Cache Invalidate/Enable/Disable");
  108. #endif  SIRIUS
  109.     menu_string("o [addr]", 32, "Open Addr as 8 bit byte");
  110.     menu_string("p [addr]", 32, "Open Page Map");
  111.     menu_string("q [addr]", 32, "Open EEPROM");
  112.     menu_string("r", 39, "Open CPU Regs (i.e. PC)");
  113.     menu_string("s [digit]", 31, "Set/Query Function Code (0-7)");
  114.     menu_string("t [y/n/c]", 31, "Trace: Yes/No/Continue");
  115.     menu_string("u [arg]", 33, "Select Console Device");
  116.     menu_string("v beg_addr end_addr [size]", 14, "Display Memory");
  117.     menu_string("w [addr] [string]", 23, "Vector");
  118.     menu_string("x", 39, "Extended Diag Tests");
  119. #ifdef  SIRIUS
  120.     menu_string("y [c cxt] [s cxt sg_addr] [p cxt pg_adr]", 0, "Flush Cntxt/Seg/Page");
  121. #endif  SIRIUS
  122.     menu_string("z [addr]", 32, "Set Breakpoint");
  123.     display_border();
  124.     printf("\n");
  125. }
  126.  
  127. /*
  128.  *    Display the top and bottom borders of help menu
  129.  */
  130.  
  131. display_border() {
  132.     int    i;
  133.  
  134.     for (i = 0; i < 76; i++)
  135.         putchar('-');
  136.     printf("\n");
  137. }
  138.  
  139. /*
  140.  *    Display one line of the help menu as follows
  141.  *
  142.  *    cmdstr = command string
  143.  *    blanknum = number of blanks between command string & |
  144.  *    defstr = definition string of command
  145.  */
  146.  
  147. menu_string(cmdstr, blanknum, defstr) 
  148.     char *cmdstr;
  149.     int  blanknum;
  150.     char *defstr;
  151. {
  152.       int  i;
  153.  
  154.       printf("%s", cmdstr);        /* Display the command string */
  155.  
  156.       for(i=0; i < blanknum; i++)     /* Display in the blank spaces */
  157.             putchar(' ');
  158.  
  159.       printf("| %s\n", defstr);    /* Display the definition string */
  160. }
  161.  
  162.